package com.jy.oms.framework.asyn.task.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @author liuquan
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface TaskExclusiveStrategy {

    /**
     * 排他, 一个时间点同一类任务只有一个可以执行
     */
    boolean enableExclusive() default false;

    /**
     * 排他任务组，多个任务在一个排他组内，同一时间点只能执行一个任务
     */
    String taskExclusiveGroup() default "";

    /**
     * 相同业务单号任务排他，任务会串行化执行
     */
    boolean exclusiveSameBill() default false;
}
